package com.agan.jvm.test01.lesson04;
/**
 * @author 阿甘
 * @see https://study.163.com/course/introduction/1211562809.htm?share=1&shareId=1028852228
 * @version 1.0
 * 注：如有任何疑问,欢迎加阿甘老师微信agan-java 进行讨论
 */
public class Main {
    static {
        System.out.println("Main static init ...");
    }

    public static void main(String[] args) {
        System.out.println("Main main begin");
        Son a = new Son();
        System.out.println(Son.width);
        Son b = new Son();

    }
}
/*
执行的结果：
Main static init ...   //执行Main的<clinit>方法
Main main begin
Initialize class father //执行Father的<clinit>方法
Initialize class son    //执行Son的<clinit>方法
Son init ...            //执行Son的<init>方法
30
Son init ...            //执行Son的<init>方法


剖析类的初始化顺序
1.先执行父类的<clinit>方法，再执行子类的<clinit>方法
2.执行父类的<init>方法，再执行子类的<init>方法
3.<clinit>方法只执行一次(class对象只执行一次)，<init>方法可以执行多次（因为可以多次new对象）

 */
